/**
 * 测试类 - 验证各版本功能
 */
public class TestCalculationSystem {
    
    /**
     * 测试随机数生成
     */
    public static void testRandomNumberGeneration() {
        System.out.println("=== 测试随机数生成 ===");
        for (int i = 0; i < 5; i++) {
            int num = CalculationSystemV01.generateRandomNumber(1, 100);
            System.out.println("随机数 " + (i+1) + ": " + num);
            // 验证范围
            if (num < 1 || num > 100) {
                System.out.println("错误：随机数超出范围!");
                return;
            }
        }
        System.out.println("随机数测试通过 ✓\n");
    }
    
    /**
     * 测试算式生成
     */
    public static void testEquationGeneration() {
        System.out.println("=== 测试算式生成 ===");
        
        // 测试V0.2的算式生成
        String[] equation = CalculationSystemV02.generateEquationWithAnswer(1);
        System.out.println("生成的算式: " + equation[0]);
        System.out.println("答案: " + equation[1]);
        
        // 验证答案格式
        if (!equation[0].contains("=")) {
            System.out.println("错误：算式格式错误!");
            return;
        }
        if (equation[1] == null) {
            System.out.println("错误：答案为空!");
            return;
        }
        System.out.println("算式生成测试通过 ✓\n");
    }
    
    /**
     * 测试唯一性
     */
    public static void testUniqueness() {
        System.out.println("=== 测试算式唯一性 ===");
        
        // 重置V0.3的集合
        try {
            java.lang.reflect.Field field = CalculationSystemV03.class.getDeclaredField("equationSet");
            field.setAccessible(true);
            field.set(null, new java.util.HashSet<String>());
        } catch (Exception e) {
            System.out.println("重置集合失败，继续测试...");
        }
        
        // 生成多个算式检查是否重复
        for (int i = 1; i <= 5; i++) {
            String[] eq1 = CalculationSystemV03.generateUniqueEquation(i);
            String[] eq2 = CalculationSystemV03.generateUniqueEquation(i + 5);
            
            String key1 = eq1[0].split(":")[1].split("=")[0].trim();
            String key2 = eq2[0].split(":")[1].split("=")[0].trim();
            
            System.out.println("算式 " + i + ": " + key1);
            System.out.println("算式 " + (i+5) + ": " + key2);
            
            if (key1.equals(key2)) {
                System.out.println("警告：检测到重复算式");
            }
        }
        System.out.println("唯一性测试完成 ✓\n");
    }
    
    public static void main(String[] args) {
        System.out.println("开始功能测试...\n");
        
        testRandomNumberGeneration();
        testEquationGeneration();
        testUniqueness();
        
        System.out.println("所有测试完成！ ✓");
    }
}